﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using DAL.Entities;

namespace BAL
{
    public class ProveedorBAL
    {
        public ProveedorBAL() { }


        /// <summary>
        /// Funcion que devuelve los proveedores
        /// </summary>
        /// <returns></returns>
        public List<ProveedorEntity> GetProveedores()
        {
            try
            {
                ProveedorDAL proxy = new ProveedorDAL();
                return  proxy.GetProveedores();

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }




        /// <summary>
        /// Funcion que cambia un proveedor A CLIENTE
        /// </summary>
        /// <returns></returns>
        public ClienteEntity CambiarProveedorACliente(ProveedorEntity prov, ClienteEntity client)
        {
            try
            {
                ProveedorDAL proxy = new ProveedorDAL();
                return proxy.CambiarProveedorACliente(prov,client);

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }



        /// <summary>
        /// Funcion que devuelve un proveedor
        /// </summary>
        /// <returns></returns>
        public ProveedorEntity GetProveedorById(ProveedorEntity prov)
        {
            try
            {
                ProveedorDAL proxy = new ProveedorDAL();
                return proxy.GetProveedorById(prov);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Funcion que devuelve un proveedor
        /// </summary>
        /// <returns></returns>
        public ProveedorEntity GetProveedorByCuit(ProveedorEntity prov)
        {
            try
            {
                ProveedorDAL proxy = new ProveedorDAL();
                return proxy.GetProveedorByCuit(prov);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Funcion que devuelve un proveedor por su cuit
        /// </summary>
        /// <returns></returns>
        public ProveedorEntity GetProveedorByRazonSocial(ProveedorEntity prov)
        {
          
            try
            {
                ProveedorDAL proxy = new ProveedorDAL();
                return proxy.GetProveedorByRazonSocial(prov);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Funcion que agrega un proveedor
        /// </summary>
        /// <returns></returns>
        public ProveedorEntity AddProveedor(ProveedorEntity prov)
        {
            try
            {
                ProveedorDAL proxy = new ProveedorDAL();
                return proxy.AddProveedor(prov);

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Funcion que actualiza un proveedor
        /// </summary>
        /// <returns></returns>
        public bool UpdateProveedor(ProveedorEntity proveedor)
        {
            try
            {
                ProveedorDAL proxy = new ProveedorDAL();
                return proxy.UpdateProveedor(proveedor);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Funcion que devuelve los proveedores filtrado
        /// </summary>
        /// <returns></returns>
        public List<ProveedorEntity> GetProveedoresFiltre(ProveedorEntity _proveedor)
        {
            try
            {
                ProveedorDAL proxy = new ProveedorDAL();
                return proxy.GetProveedoresFiltre(_proveedor);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }



        /// <summary>
        /// Funcion que borra un proveedor
        /// </summary>
        /// <returns></returns>
        public bool DeleteProveedor(ProveedorEntity proveedor)
        {
            try
            {
                ProveedorDAL proxy = new ProveedorDAL();
                return proxy.DeleteProveedor(proveedor);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public ProveedorEntity GetProveedorByUserId(int idUsuario)
        {
            ProveedorDAL dal = new ProveedorDAL();
            return dal.GetProveedorByUserId(idUsuario);
        }

        public void CanjearCupon(DateTime fechaActual, int idCompra)
        {
            ProveedorDAL dal = new ProveedorDAL();
            dal.CanjearCupon(fechaActual, idCompra);
        }

    }
}
